#!/usr/bin/env python3
#################################
# 前端：
#     基于 Python3 tkinter 构建
#     该前端作者：gfdgd xi
#  后端：
#     trans 终端程序
# 版本：1.0
# 适用平台：Linux
#################################
# 引入所需的库
import tkinter as tk
import tkinter.messagebox
import os
# 程序窗口所需的事件
########################
# 显示“关于这个程序”窗口
########################
def about_this_program():
    tkinter.messagebox.showinfo(title="关于这个程序",message="一个基于 Python3 的 tkinter 制作的 trans 翻译前端\n目前支持英语转中文\n版本：1.0\n适用平台：Linux")
##############
# 显示“提示”窗口
###############
def helps():
    tkinter.messagebox.showinfo(title="提示", message="提示：\n1、如果用终端打开程序来翻译单词，将会在终端看到详细的单词解释\n2、支持句子翻译")
###################
# 用于翻译的事件
# 调用了“trans”程序
###################
def fanyi():
    fanyienglish = e.get() # 获取要翻译的英语内容
    output = os.popen('trans -b "' + fanyienglish + '"').read() # 获取简略翻译
    outputonconsole = os.popen('trans -d "' + fanyienglish + '"').read() # 获取详细翻译
    # 在终端显示详细翻译
    print("######################################")
    print(outputonconsole)
    # 在翻译框显示简略翻译
    textbox1.configure(state=tkinter.NORMAL) # 临时启用翻译框可读写
    textbox1.delete('1.0', 'end') # 删除翻译框全部内容
    textbox1.insert('end',output) # 往翻译框添加简略翻译
    textbox1.configure(state=tkinter.DISABLED) # 禁用翻译框可读写
# 创建窗口
window = tk.Tk() # 创建窗口对象
window.title("trans 翻译前端") # 设置窗口标题
# 创建并设置控件
e = tk.Entry(window,show=None) # 设置英语输入框
textbox1 = tk.Text(window,show=None,width=50,height=10) # 设置翻译框
textbox1.configure(state=tkinter.DISABLED) # 设置翻译框为禁用
button1 = tk.Button(window,text="翻译文本框内容",width=15,height=1,command=fanyi) # 设置翻译按钮
menu = tk.Menu(window) # 设置菜单栏
programmenu = tk.Menu(menu,tearoff=0) # 设置“程序”菜单栏
menu.add_cascade(label="程序",menu=programmenu)
programmenu.add_command(label="退出程序",command=window.quit) # 设置“退出程序”项
help = tk.Menu(menu,tearoff=0) # 设置“帮助”菜单栏
menu.add_cascade(label="帮助",menu=help)
help.add_command(label="小提示",command=helps) # 设置“小提示”项
help.add_separator() # 设置分界线
help.add_command(label="关于这个程序",command=about_this_program) # 设置“关于这个程序”项
# 显示控件
window.config(menu=menu) # 显示菜单栏
e.pack() # 显示英语输入框
button1.pack() # 显示翻译按钮
textbox1.pack() # 显示翻译框
# 显示窗口
window.mainloop()